<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>emacps: xemacps_bdring.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">emacps
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xemacps__bdring_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xemacps_bdring.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is an internal structure used to maintain the DMA list.  <a href="struct_x_emac_ps___bd_ring.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaf634277466b3d759cf1770ef4e263886"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gaf634277466b3d759cf1770ef4e263886">XEmacPs_BdRingCntCalc</a>(Alignment, Bytes)&#160;&#160;&#160;(u32)((Bytes) / (sizeof(<a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a>)))</td></tr>
<tr class="memdesc:gaf634277466b3d759cf1770ef4e263886"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this macro at initialization time to determine how many BDs will fit in a BD list within the given memory constraints.  <a href="group__emacps.html#gaf634277466b3d759cf1770ef4e263886">More...</a><br/></td></tr>
<tr class="separator:gaf634277466b3d759cf1770ef4e263886"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf5234fa28a21cd02e35fc3d49b73ff4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gaf5234fa28a21cd02e35fc3d49b73ff4d">XEmacPs_BdRingMemCalc</a>(Alignment, NumBd)&#160;&#160;&#160;(u32)(sizeof(<a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a>) * (NumBd))</td></tr>
<tr class="memdesc:gaf5234fa28a21cd02e35fc3d49b73ff4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this macro at initialization time to determine how many bytes of memory is required to contain a given number of BDs at a given alignment.  <a href="group__emacps.html#gaf5234fa28a21cd02e35fc3d49b73ff4d">More...</a><br/></td></tr>
<tr class="separator:gaf5234fa28a21cd02e35fc3d49b73ff4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga668214818403599166ca19be2c2e7a6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga668214818403599166ca19be2c2e7a6b">XEmacPs_BdRingGetCnt</a>(RingPtr)&#160;&#160;&#160;((RingPtr)-&gt;AllCnt)</td></tr>
<tr class="memdesc:ga668214818403599166ca19be2c2e7a6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the total number of BDs allocated by this channel with <a class="el" href="group__emacps.html#ga8e84294f518be6f9089cbac00e924056" title="Using a memory segment allocated by the caller, create and setup the BD list for the given DMA channe...">XEmacPs_BdRingCreate()</a>.  <a href="group__emacps.html#ga668214818403599166ca19be2c2e7a6b">More...</a><br/></td></tr>
<tr class="separator:ga668214818403599166ca19be2c2e7a6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2206d6117c95bb46b85ee4d45dcafb00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga2206d6117c95bb46b85ee4d45dcafb00">XEmacPs_BdRingGetFreeCnt</a>(RingPtr)&#160;&#160;&#160;((RingPtr)-&gt;FreeCnt)</td></tr>
<tr class="memdesc:ga2206d6117c95bb46b85ee4d45dcafb00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of BDs allocatable with <a class="el" href="group__emacps.html#gabadbd5215bb371a7f10f8bd1acc2db38" title="Reserve locations in the BD list. ">XEmacPs_BdRingAlloc()</a> for pre- processing.  <a href="group__emacps.html#ga2206d6117c95bb46b85ee4d45dcafb00">More...</a><br/></td></tr>
<tr class="separator:ga2206d6117c95bb46b85ee4d45dcafb00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78e691ca1e87aca56ebead6d6b6057a4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga78e691ca1e87aca56ebead6d6b6057a4">XEmacPs_BdRingNext</a>(RingPtr, BdPtr)</td></tr>
<tr class="memdesc:ga78e691ca1e87aca56ebead6d6b6057a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the next BD from BdPtr in a list.  <a href="group__emacps.html#ga78e691ca1e87aca56ebead6d6b6057a4">More...</a><br/></td></tr>
<tr class="separator:ga78e691ca1e87aca56ebead6d6b6057a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade23035ee29807c56ca61ab241d4ba0c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gade23035ee29807c56ca61ab241d4ba0c">XEmacPs_BdRingPrev</a>(RingPtr, BdPtr)</td></tr>
<tr class="memdesc:gade23035ee29807c56ca61ab241d4ba0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the previous BD from BdPtr in the list.  <a href="group__emacps.html#gade23035ee29807c56ca61ab241d4ba0c">More...</a><br/></td></tr>
<tr class="separator:gade23035ee29807c56ca61ab241d4ba0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga8e84294f518be6f9089cbac00e924056"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga8e84294f518be6f9089cbac00e924056">XEmacPs_BdRingCreate</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, UINTPTR PhysAddr, UINTPTR VirtAddr, u32 Alignment, u32 BdCount)</td></tr>
<tr class="memdesc:ga8e84294f518be6f9089cbac00e924056"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using a memory segment allocated by the caller, create and setup the BD list for the given DMA channel.  <a href="group__emacps.html#ga8e84294f518be6f9089cbac00e924056">More...</a><br/></td></tr>
<tr class="separator:ga8e84294f518be6f9089cbac00e924056"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac18e6a6caef3d31a7f8ff684657fc0df"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gac18e6a6caef3d31a7f8ff684657fc0df">XEmacPs_BdRingClone</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> *SrcBdPtr, u8 Direction)</td></tr>
<tr class="memdesc:gac18e6a6caef3d31a7f8ff684657fc0df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clone the given BD into every BD in the list.  <a href="group__emacps.html#gac18e6a6caef3d31a7f8ff684657fc0df">More...</a><br/></td></tr>
<tr class="separator:gac18e6a6caef3d31a7f8ff684657fc0df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabadbd5215bb371a7f10f8bd1acc2db38"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gabadbd5215bb371a7f10f8bd1acc2db38">XEmacPs_BdRingAlloc</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 NumBd, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> **BdSetPtr)</td></tr>
<tr class="memdesc:gabadbd5215bb371a7f10f8bd1acc2db38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserve locations in the BD list.  <a href="group__emacps.html#gabadbd5215bb371a7f10f8bd1acc2db38">More...</a><br/></td></tr>
<tr class="separator:gabadbd5215bb371a7f10f8bd1acc2db38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga40dabe1abc80cd13b305f117c1b87faf"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga40dabe1abc80cd13b305f117c1b87faf">XEmacPs_BdRingUnAlloc</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 NumBd, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> *BdSetPtr)</td></tr>
<tr class="memdesc:ga40dabe1abc80cd13b305f117c1b87faf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fully or partially undo an <a class="el" href="group__emacps.html#gabadbd5215bb371a7f10f8bd1acc2db38" title="Reserve locations in the BD list. ">XEmacPs_BdRingAlloc()</a> operation.  <a href="group__emacps.html#ga40dabe1abc80cd13b305f117c1b87faf">More...</a><br/></td></tr>
<tr class="separator:ga40dabe1abc80cd13b305f117c1b87faf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacbfaf8300ce76fa1853ee9b1a113fbd0"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gacbfaf8300ce76fa1853ee9b1a113fbd0">XEmacPs_BdRingToHw</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 NumBd, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> *BdSetPtr)</td></tr>
<tr class="memdesc:gacbfaf8300ce76fa1853ee9b1a113fbd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enqueue a set of BDs to hardware that were previously allocated by <a class="el" href="group__emacps.html#gabadbd5215bb371a7f10f8bd1acc2db38" title="Reserve locations in the BD list. ">XEmacPs_BdRingAlloc()</a>.  <a href="group__emacps.html#gacbfaf8300ce76fa1853ee9b1a113fbd0">More...</a><br/></td></tr>
<tr class="separator:gacbfaf8300ce76fa1853ee9b1a113fbd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafef8904055a06754515319a708fc8361"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gafef8904055a06754515319a708fc8361">XEmacPs_BdRingFree</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 NumBd, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> *BdSetPtr)</td></tr>
<tr class="memdesc:gafef8904055a06754515319a708fc8361"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a set of BDs that had been previously retrieved with XEmacPs_BdRingFromHw().  <a href="group__emacps.html#gafef8904055a06754515319a708fc8361">More...</a><br/></td></tr>
<tr class="separator:gafef8904055a06754515319a708fc8361"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7deb944fa938960a3b45f0d8adf18108"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga7deb944fa938960a3b45f0d8adf18108">XEmacPs_BdRingFromHwTx</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 BdLimit, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> **BdSetPtr)</td></tr>
<tr class="memdesc:ga7deb944fa938960a3b45f0d8adf18108"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a set of BD(s) that have been processed by hardware.  <a href="group__emacps.html#ga7deb944fa938960a3b45f0d8adf18108">More...</a><br/></td></tr>
<tr class="separator:ga7deb944fa938960a3b45f0d8adf18108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8a9b2d189549fd168b4a40c6967ac31"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#gae8a9b2d189549fd168b4a40c6967ac31">XEmacPs_BdRingFromHwRx</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u32 BdLimit, <a class="el" href="group__emacps.html#gabdac9aa9170655a763bf06bab3aa2a62">XEmacPs_Bd</a> **BdSetPtr)</td></tr>
<tr class="memdesc:gae8a9b2d189549fd168b4a40c6967ac31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a set of BD(s) that have been processed by hardware.  <a href="group__emacps.html#gae8a9b2d189549fd168b4a40c6967ac31">More...</a><br/></td></tr>
<tr class="separator:gae8a9b2d189549fd168b4a40c6967ac31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6e48d113604e65a01d5ef23b4d8186c7"><td class="memItemLeft" align="right" valign="top">LONG&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga6e48d113604e65a01d5ef23b4d8186c7">XEmacPs_BdRingCheck</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, u8 Direction)</td></tr>
<tr class="memdesc:ga6e48d113604e65a01d5ef23b4d8186c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check the internal data structures of the BD ring for the provided channel.  <a href="group__emacps.html#ga6e48d113604e65a01d5ef23b4d8186c7">More...</a><br/></td></tr>
<tr class="separator:ga6e48d113604e65a01d5ef23b4d8186c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga08edb60b6e29e6e8ae56508a30b54eeb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__emacps.html#ga08edb60b6e29e6e8ae56508a30b54eeb">XEmacPs_BdRingPtrReset</a> (<a class="el" href="struct_x_emac_ps___bd_ring.html">XEmacPs_BdRing</a> *RingPtr, void *virtaddrloc)</td></tr>
<tr class="memdesc:ga08edb60b6e29e6e8ae56508a30b54eeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset BD ring head and tail pointers.  <a href="group__emacps.html#ga08edb60b6e29e6e8ae56508a30b54eeb">More...</a><br/></td></tr>
<tr class="separator:ga08edb60b6e29e6e8ae56508a30b54eeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
